package com.example.designPattern.singleton;

import java.io.Serializable;
import java.lang.reflect.Field;


//线程安全 （静态内部类） 第五种也可以分开写了 变成两种针对  HungrySafeSingleton，HungrySafeStaticCodeBlockSingleton（只能算一种）
public class HungrySafeStaticSingleton implements Serializable {
    /**
     *类变量在类准备阶段就初始化了然后放在<clinit>构造方法中，
     *一旦外部调用了静态方法，那么就会初始化完成。
     */
    private static HungrySafeStaticSingleton instance;
    private HungrySafeStaticSingleton(){}

    private static class SingletonHolder{
        private static HungrySafeStaticSingleton instance = new HungrySafeStaticSingleton();
    }
    public static synchronized HungrySafeStaticSingleton getInstance(){
        return SingletonHolder.instance;
    }

    public static Object readResolve(){
        return SingletonHolder.instance;
    }



}

